﻿
namespace Tools.MAME
{
    #region Connection

    /// <summary> Values that represent ConnectionStatus. </summary>
    public enum ConnectionStatus
    {
        /// <summary> Valid connection was made to existing Db. </summary>
        Success,
        /// <summary> Valid connection was made to new Db; ready for loading. </summary>
        New,
        /// <summary> Valid connection was made to Db with old schema. Db has been cleared; ready for loading. </summary>
        RequiresRefresh
    }

    #endregion

    #region Values

    /// <summary> Values that represent DriverAttributeStatus. </summary>
    public enum DriverAttributeStatus : int
    {
        /// <summary> Represents working driver attribute. </summary>
        good = 0,
        /// <summary> Represents working, albeit imperfect driver attribute. </summary>
        imperfect = 1,
        /// <summary> Represents non-working (or partially working) preliminary driver attribute. </summary>
        preliminary = 2
    }

    ///-------------------------------------------------------------------------------------------------
    /// <summary> Values that represent SoftwareListStatus. </summary>
    ///-------------------------------------------------------------------------------------------------
    public enum SoftwareListStatus : int
    {
        /// <summary> ?? </summary>
        original = 0,
        /// <summary> ?? </summary>
        compatible = 1
    }

    ///-------------------------------------------------------------------------------------------------
    /// <summary> Values that represent RomDumpStatus. </summary>
    ///-------------------------------------------------------------------------------------------------
    public enum RomDumpStatus : int
    {
        /// <summary> Dump is know to be invalid. </summary>
        baddump = 0,
        /// <summary> No dump available. </summary>
        nodump = 1,
        /// <summary> Known good dump. </summary>
        good = 2
    }

    ///-------------------------------------------------------------------------------------------------
    /// <summary> Values that represent ChipType. </summary>
    ///-------------------------------------------------------------------------------------------------
    public enum ChipType : int
    {
        /// <summary> CPU chip. </summary>
        cpu = 0,
        /// <summary> Audio chip. </summary>
        audio = 1
    }

    ///-------------------------------------------------------------------------------------------------
    /// <summary> Values that represent DisplayType. </summary>
    ///-------------------------------------------------------------------------------------------------
    public enum DisplayType : int
    {
        /// <summary> Raster display. </summary>
        raster = 0,
        /// <summary> Vector display. </summary>
        vector = 1,
        /// <summary> LCD display. </summary>
        lcd = 2,
        /// <summary> Unknown display. </summary>
        unknown = 3
    }

    #endregion

    #region Filter

    ///-------------------------------------------------------------------------------------------------
    /// <summary> Values that represent IntelligentFilterMode. </summary>
    ///-------------------------------------------------------------------------------------------------
    public enum IntelligentFilterMode
    {
        /// <summary> No region based filter will be applied. </summary>
        Off,
        /// <summary> All items matching specified region(s) will be included. </summary>
        Region,                
        /// <summary> One game per parent/clone relationship will be included, with single defined 
        ///           region being used as a hint to determine region preference. </summary>
        OnePerWithRegionHint
    }

    /// <summary> Values that represent Condition. </summary>
    public enum Condition
    {
        /// <summary> Equal. </summary>
        Equal,
        /// <summary> Not equal. </summary>
        NotEqual,
        /// <summary> Less than. </summary>
        LessThan,
        /// <summary> Less than or equal. </summary>
        LessThanOrEqual,
        /// <summary> Greater than. </summary>
        GreaterThan,
        /// <summary> Greater than or equal. </summary>
        GreaterThanOrEqual
    }

    #endregion
}
